// 系统
// import log from './modules/log';
// import setting from './modules/setting';
// import base from './modules/base';
// import auth from './modules/auth';
// import basic from './modules/basic';
// import compDesign from './modules/compDesign';
// import model from './modules/model';
// import BI from './modules/BI';
// import simulation from './modules/simulation';
import modelDesign from './modelDesign';
import modulesTemplate from './modules';

import basicData from './basicData';
// export default [
//     // base,
//     // // log,
//     // setting,
//     // basic,
//     // auth,
//     // simulation,
//     // // model,
//     // compDesign,
//     modelDesign,
//     // BI
// ];
import tools from 'public/tools/index';
import {cloneDeep} from "lodash";
const modules=[
    // modelDesign,
   // modulesTemplate,
    //basicData,
]
const getMenu=function(menu=[]){
    return [...modules,...menu]
}

/**
 * menu方法
 * */
const getDynaMenu=function(api){
    let token = util.cookies.get('token');
    let uuid =  util.cookies.get('uuid');
    
    if(token && uuid){
        return api.Menu.getMenuList(uuid).then(res=>{
            return dealMenuData(res)
        }).catch(e=>{
            console.log("file: index.js:49  returnapi.Menu.getMenuList  e:", e)
            // util.cookies.remove('token');
            // util.cookies.remove('uuid');
            return [];
        })
    }else{
        return []
    }
}

/**
 * 菜单处理成树结构
 * @param menuList
 * @returns {*}
 */
const getMenuSider=function(menuList){
    menuList.sort((a, b) => a.menuNum - b.menuNum);
    let homeMenu=menuList.filter(item=>!item.pid);
    let childMenu=menuList.filter(item=>!!item.pid);
    childMenu.map(menuItem=>{
        homeMenu=insertMenu(homeMenu,menuItem);
    });
    // homeMenu.forEach(menu => {
    //     insertMenu(menu,childMenu);
    // })
    return homeMenu;
}

const insertMenu=function(menu,menuItem){
    menu.forEach(item=>{
        if(item.id===menuItem.pid){
            if(!item.children) item['children']=[];
            item.children.push(menuItem);
        }else{
            if(!!item.children){
                item.children=insertMenu(item.children,menuItem);
            }
        }
    });
    return menu;
}

// const insertMenu=function(topMenu,childMenu){
//     let childrenMenuList = childMenu.filter(item => item.pid == topMenu.id);
//     if (childrenMenuList != null && childrenMenuList.length > 0) {
//         topMenu.children = childrenMenuList;
//         topMenu.children.forEach(menu => {
//             insertMenu(menu,childMenu);
//         })
//     }
// }

/**
 * 处理菜单列表
 * @param data
 * @returns {*[]}
 */
const dealMenuData=function(data) {
    let tempData = cloneDeep(data);
    let menuList = [];
    if (tempData.length > 0) {
        tempData.forEach((item) => {
            let tempUrl = item.menuPath.split('?');
            let params = {};
            let path = item.menuPath;
            if (tempUrl.length > 1) {
                params = getPathParam(tempUrl[1]);
                path = tempUrl[0]
            }
            path = path.substring(0, 1) === '/' ? path : '/' + path;
            // let menuPath = tempUrl[0].substring(0, 1) === '/' ?  tempUrl[0].substring(1) :  tempUrl[0];
            // path = '/StarCloud' + path;
            let newMenu = {
                id: item.id,
                pid: item.fatherMenuId,
                icon: item.showPic,
                path: path,
                name: item.menuName+item.id,
                meta: {
                    auth: true,
                    menu: true,
                    path: path,
                    title: {
                        'zh-CN': item.menuName,
                        'en-US': item.menuName
                    },
                    params: params,
                },
                menuNum: item.menuNum
            };

            if (!item.fatherMenuId) {
                newMenu['header'] = 'home';
            }
            menuList.push(newMenu);
        })
    }


    return menuList;
}

/**
 * 处理连接参数字符串
 * @param paramStr
 * @returns {{}}
 */
const getPathParam=function(paramStr) {
    let params = {};
    let arr = paramStr.split("&");
    for (let i = 0, l = arr.length; i < l; i++) {
        let a = arr[i].split("=");
        params[a[0]] = a[1];
    }
    return params;
}

export { getMenu,getDynaMenu,dealMenuData,getMenuSider};
